我花了幾個月的時間,在一台單機的 DGX Spark(GB10,128GB 統一記憶體)上,從零微調一個資安領域的語言模型,並且把它接到四個真實的 MSSP 工作流程裡。這 30 天,我會把整個過程——包含做對的、做錯的、以及最後承認「這件事本來就不該用微調解」的部分——完整寫一遍。
第一天要先回答一個必須先回答的問題:通用模型已經這麼強了,為什麼還要做資安垂直模型?
如果這題答不好,後面 29 天的工程都是在解一個不存在的問題。
最常聽到的答案是:「因為通用模型的資安知識不夠。」
這個答案我認為是錯的,至少在 2026 年是錯的。你現在拿任何一個前沿模型去問 CVE-2021-44228 是什麼、SQL Injection 怎麼防、ISO 27001 的 Annex A 有哪些控制項,它答得比大多數初級分析師好。純知識性的落差已經被填得差不多了。
如果知識落差是主要問題,那答案應該是 RAG,不是微調。這點我在 Day 6 和 Day 14 會再回來狠狠打自己一次。
真正的落差在別的地方。
資安工作的產出物有極強的格式慣性。一份事件報告要有固定的段落順序、固定的欄位、固定的嚴重性分級語彙;一份月報要跟前六個月的月報長得一樣,因為客戶的窗口是用「跟上個月比」的方式在讀它。
你可以用 prompt 把格式寫進去。但當格式規則累積到三十條、而且其中有五條是「這個客戶特別要求」的例外時,通用模型的服從性會開始崩壞——它會漏掉第 17 條,會自作主張多加一個「建議事項」段落,會把嚴重性從「高」寫成「重大」。
這不是知識問題,是行為問題。而行為,是微調擅長的東西。
問通用模型「這個告警要不要升級?」,它會給你一段四平八穩的分析,列出三個要考慮的面向,然後說「建議由分析師依實際情況判斷」。
正確,但沒用。
一個成熟的資安團隊對「什麼情況要升級」是有共識的,而這個共識大多沒有寫成文件,它藏在過去三年的事件報告、每一次的處理紀錄、每一封回覆客戶的信裡面。通用模型沒看過這些,所以它只能給你一個安全的、不承諾的答案。
垂直模型要學的不是「什麼是橫向移動」,是「在我們這個團隊,看到這種行為時我們會怎麼判」。
這一種最痛。
資安工作有大量內容在通用模型的安全邊界附近:攻擊手法的細節、惡意程式的行為分析、滲透測試的步驟、紅隊的規劃。通用模型會拒答,或者答一半然後加上一大段免責聲明。
在新人訓練這個場景特別明顯——你要模型出一題關於某個攻擊技術的考題並解釋答案,它可能會覺得你在問怎麼攻擊。
微調可以調整這個邊界。但我要先講清楚:調整邊界不等於拆掉邊界。 這件事的正確做法是讓模型在明確的、可稽核的、有人審閘道的工作流程裡放寬,而不是訓練一個什麼都答的模型放到外面。這條線我在 Day 25 到 Day 28 會用四篇的篇幅講,因為它比訓練本身重要。
把上面三種歸納起來,我在第一天就該想清楚(但實際上我是做到第 12 天才想清楚的):
| 落差類型 | 該用什麼解 |
|---|---|
| 知識不夠新、不夠準 | RAG |
| 知識太多、要引用出處 | RAG |
| 格式不服從 | 微調(SFT) |
| 判斷不收斂 | 微調(SFT + 推理蒸餾) |
| 語域不熟悉、術語生硬 | 微調(CPT) |
| 過度拒答 | 微調 + 流程設計 |
這張表是我這 30 天最貴的產出。它看起來很像廢話,但你會發現大部分「AI 資安專案失敗」的故事,都是把左邊某一行配到右邊錯誤的格子裡。
所有跟客戶相關的資料,我一律用合成資料重建,內容結構真實、數值與識別資訊全部是假的。哪幾天是合成資料我會標出來。
明天開始講場景:一個 MSSP 的四個痛點,以及為什麼我選了這四個。
🛡️ 這個系列的實作過程、踩坑筆記與延伸內容,我會同步更新在 Instagram: @aid3fend — AI 資安實戰紀錄,歡迎追蹤交流。